package com.note.kafka.service;

import com.alibaba.fastjson.JSONObject;

/**
 * <p>【描述】：kafka 生产者</p>
 * <p>【作者】: BeyMax</p>
 * <p>【日期】: 2019-08-29</p>
 **/
public interface KafkaProductService {

    /**
     * <p>【描述】：采集任务配置【生产者】</p>
     * <p>【方法】：sendTaskConfigKafka</p>
     * <p>【参数】: [messageJo]</p>
     * <p>【作者】: BeyMax</p>
     * <p>【日期】: 2019-08-29</p>
     **/
    void sendTaskConfigKafka(JSONObject messageJo);

    /**
     * <p>【描述】：定时检测任务是否完成</p>
     * <p>【方法】：sendTaskStatusKafka</p>
     * <p>【参数】: [messageJo]</p>
     * <p>【作者】: BeyMax</p>
     * <p>【日期】: 2019-08-29</p>
     **/
    void sendTaskStatusKafka(JSONObject messageJo);

    /**
     * <p>【描述】：采集已经完成的任务，需要更新mysql中采集任务配置表中的状态</p>
     * <p>【方法】：sendTaskFinishUpdateKafka</p>
     * <p>【参数】: [messageJo]</p>
     * <p>【作者】: BeyMax</p>
     * <p>【日期】: 2019-08-29</p>
     **/
    void sendTaskFinishUpdateKafka(JSONObject messageJo);

    /**
     * <p>【描述】：查询帖子正文已经同步到的最大id</p>
     * <p>【方法】：sendTransferTweetData</p>
     * <p>【参数】: [jo]</p>
     * <p>【作者】: BeyMax</p>
     * <p>【日期】: 2019-08-30</p>
     **/
    void sendTransferTweetData(JSONObject messageJo);

    /**
     * <p>【描述】：查询tweet用户信息表同步到的最大id</p>
     * <p>【方法】：sendTransferTweetUserData</p>
     * <p>【参数】: [messageJo]</p>
     * <p>【作者】: BeyMax</p>
     * <p>【日期】: 2019-08-30</p>
     **/
    void sendTransferTweetUserData(JSONObject messageJo);

    /**
     * <p>【描述】：tweet粉丝数据同步到的最大id</p>
     * <p>【方法】：sendTransferTweetUserFollow</p>
     * <p>【参数】: [messageJo]</p>
     * <p>【作者】: BeyMax</p>
     * <p>【日期】: 2019-08-30</p>
     **/
    void sendTransferTweetUserFollow(JSONObject messageJo);

    /**
     * <p>【描述】：postgresql已经同步的最大id，回写到mysql</p>
     * <p>【方法】：sendUpdateMaxIdBack</p>
     * <p>【参数】: [messageJo]</p>
     * <p>【作者】: BeyMax</p>
     * <p>【日期】: 2019-08-30</p>
     **/
    void sendUpdateMaxIdBack(JSONObject messageJo);


    /**
     * <p>【描述】：发送tweet帖子、用户、粉丝数据</p>
     * <p>【方法】：sendTweetDataAllMessage</p>
     * <p>【参数】: [tableName, messageJo]</p>
     * <p>【作者】: BeyMax</p>
     * <p>【日期】: 2019-08-30</p>
     **/
    void sendTweetDataAllMessage(String tableName, String message);
}
